Remove all default css and make Raleigh a pure fallback theme
authorAlexander Larsson <alexl@redhat.com>
Thu, 9 Feb 2012 22:16:03 +0000 (23:16 +0100)
committerAlexander Larsson <alexl@redhat.com>
Thu, 9 Feb 2012 22:19:17 +0000 (23:19 +0100)
It was problematic to maintain Raleigh going forward, as any
changes in it affected all themes. Also, its more robust if
each theme is a full standalone css rather than relying on
an inherited css base.

So, this changes Raleigh to a standalone theme that we can tweak
without accidentally breaking other themes, and makes the
default theme empty. In fact, we don't even add the default
provider anymore as its always empty.

gtk/Makefile.am
gtk/gtk.css.raleigh [deleted file]
gtk/gtk.gresource.xml
gtk/gtkcssprovider.c
gtk/gtksettings.c

index 17a6a0bf9e31610e8c05f7a8c744b7e3dfa30fac..dd8db33a6e36ac9fc944d5f5ae16e8276b8d1345 100644 (file)
@@ -1108,8 +1108,6 @@ dist-hook: ../build/win32/vs9/gtk.vcproj ../build/win32/vs10/gtk.vcxproj ../buil
 
 # Install a RC file for the default GTK+ theme, and key themes
 install-data-local: install-ms-lib install-def-file install-mac-key-theme
-       $(mkdir_p) $(DESTDIR)$(datadir)/themes/Raleigh/gtk-3.0
-       $(INSTALL_DATA) $(srcdir)/gtk.css.raleigh $(DESTDIR)$(datadir)/themes/Raleigh/gtk-3.0/gtk.css
        $(mkdir_p) $(DESTDIR)$(datadir)/themes/Default/gtk-3.0
        $(INSTALL_DATA) $(srcdir)/gtk-keys.css.default $(DESTDIR)$(datadir)/themes/Default/gtk-3.0/gtk-keys.css
        $(mkdir_p) $(DESTDIR)$(datadir)/themes/Emacs/gtk-3.0
diff --git a/gtk/gtk.css.raleigh b/gtk/gtk.css.raleigh
deleted file mode 100644 (file)
index f613b36..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-/*
- * This theme is the default theme if no other theme is selected.
- */
index 880c1016de10c737382d831a3853b719eb749663..cabb173d6a1305e7b836d66dfb24113c0e386da8 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <gresources>
   <gresource prefix="/org/gtk/libgtk">
-    <file>gtk-default.css</file>
+    <file alias="Raleigh.css">gtk-default.css</file>
     <file>gtk-win32.css</file>
     <file alias="cursor/dnd-ask.png">cursor_dnd_ask.png</file>
     <file alias="cursor/dnd-link.png">cursor_dnd_link.png</file>
index a637eee52b94b83ef78d2fe8719a2030e9a01b2c..5140e20985422771eaa60891bfe2a1bbe435b1f9 100644 (file)
@@ -2808,10 +2808,6 @@ gtk_css_provider_get_default (void)
   if (G_UNLIKELY (!provider))
     {
       provider = gtk_css_provider_new ();
-      if (!_gtk_css_provider_load_from_resource (provider, "/org/gtk/libgtk/gtk-default.css"))
-        {
-          g_error ("Failed to load the internal default CSS.");
-        }
     }
 
   return provider;
@@ -2852,27 +2848,37 @@ gtk_css_provider_get_named (const gchar *name,
   GtkCssProvider *provider;
   gchar *key;
 
-  if (G_UNLIKELY (!themes))
-    {
-      themes = g_hash_table_new (g_str_hash, g_str_equal);
-
-      provider = gtk_css_provider_new ();
-      if (!_gtk_css_provider_load_from_resource (provider, "/org/gtk/libgtk/gtk-win32.css"))
-        {
-          g_warning ("Failed to load the internal win32 default CSS.");
-         g_object_unref (provider);
-        }
-      else
-       g_hash_table_insert (themes, "gtk-win32", provider);
-    }
-
   if (variant == NULL)
     key = (gchar *)name;
   else
     key = g_strconcat (name, "-", variant, NULL);
 
+  if (G_UNLIKELY (!themes))
+    themes = g_hash_table_new (g_str_hash, g_str_equal);
+
   provider = g_hash_table_lookup (themes, key);
 
+  if (!provider)
+    {
+      gchar *resource_path = NULL;
+
+      if (variant)
+        resource_path = g_strdup_printf ("/org/gtk/libgtk/%s-%s.css", name, variant);
+      else
+        resource_path = g_strdup_printf ("/org/gtk/libgtk/%s.css", name);
+
+      if (g_resources_get_info (resource_path, 0, NULL, NULL, NULL))
+       {
+         provider = gtk_css_provider_new ();
+         if (!_gtk_css_provider_load_from_resource (provider, resource_path))
+           {
+             g_object_unref (provider);
+             provider = NULL;
+           }
+       }
+      g_free (resource_path);
+    }
+
   if (!provider)
     {
       const gchar *home_dir;
index ac90cdd60271f1465ceec8dbfe8130481e41a3de..34dc38c915201f55904d702fcd4b36dbdeae8047 100644 (file)
@@ -1521,7 +1521,6 @@ settings_init_style (GtkSettings *settings)
   static GtkCssProvider *css_provider = NULL;
 
   GdkScreen *screen = settings->priv->screen;
-  GtkCssProvider *default_provider;
 
   /* Add provider for user file */
   if (G_UNLIKELY (!css_provider))
@@ -1545,11 +1544,6 @@ settings_init_style (GtkSettings *settings)
                                              GTK_STYLE_PROVIDER (css_provider),
                                              GTK_STYLE_PROVIDER_PRIORITY_USER);
 
-  default_provider = gtk_css_provider_get_default ();
-  gtk_style_context_add_provider_for_screen (screen,
-                                             GTK_STYLE_PROVIDER (default_provider),
-                                             GTK_STYLE_PROVIDER_PRIORITY_FALLBACK);
-
   gtk_style_context_add_provider_for_screen (screen,
                                              GTK_STYLE_PROVIDER (settings),
                                              GTK_STYLE_PROVIDER_PRIORITY_SETTINGS);
@@ -2873,6 +2867,10 @@ settings_update_theme (GtkSettings *settings)
         provider = gtk_css_provider_get_named (theme_name, NULL);
     }
 
+  /* If we didn't find the named theme, fall back */
+  if (!provider)
+    provider = gtk_css_provider_get_named ("Raleigh", NULL);
+
   settings_update_provider (priv->screen, &priv->theme_provider, provider);
 
   if (theme_name && *theme_name)